package com.gengzp.system.service;

import com.gengzp.common.model.pagination.resp.PaginationResponse;
import com.gengzp.common.model.versionIteration.req.ChangeVersionIterationStatusReq;
import com.gengzp.common.model.versionIteration.req.CreateVersionIterationReq;
import com.gengzp.common.model.versionIteration.req.EditVersionIterationReq;
import com.gengzp.common.model.versionIteration.req.PageVersionIterationReq;
import com.gengzp.common.model.versionIteration.resp.PageVersionIterationResp;
import com.gengzp.common.model.versionIteration.resp.SearchVersionIterationResp;

/**
 * @ClassName VersionIterationService
 * @Description 版本迭代模块服务层接口
 * @Author gengzp
 * @Date 2025/10/11 16:28
 */
public interface VersionIterationService {

    /**
     * 创建版本迭代信息
     *
     * @param req 创建版本迭代信息请求参数
     */
    void createVersionIteration(CreateVersionIterationReq req);

    /**
     * 根据id编辑版本迭代信息
     *
     * @param req 编辑版本迭代信息请求参数
     */
    void editVersionIterationById(EditVersionIterationReq req);

    /**
     * 变更迭代流程
     *
     * @param req 变更迭代流程请求参数
     */
    void changeVersionIterationStatusById(ChangeVersionIterationStatusReq req);

    /**
     * 根据id删除迭代信息
     *
     * @param id 迭代id
     */
    void removeVersionIterationById(Long id);

    /**
     * 根据id查询版本迭代信息详情
     *
     * @param id 迭代id
     * @return 查询版本迭代信息详情返回参数
     */
    SearchVersionIterationResp searchVersionIterationById(Long id);

    /**
     * 分页查询版本迭代
     *
     * @param req 分页查询版本迭代请求参数
     * @return 分页查询版本迭代返回参数
     */
    PaginationResponse<PageVersionIterationResp> pageQueryVersionIterationResp(PageVersionIterationReq req);

}
